import type { BarMap } from './types';
export const BAR_MAP: BarMap = {
	vertical: {
		offset: 'offsetHeight',
		scroll: 'scrollTop',
		scrollSize: 'scrollHeight',
		size: 'height',
		key: 'vertical',
		axis: 'Y',
		client: 'clientY',
		direction: 'top',
	},
	horizontal: {
		offset: 'offsetWidth',
		scroll: 'scrollLeft',
		scrollSize: 'scrollWidth',
		size: 'width',
		key: 'horizontal',
		axis: 'X',
		client: 'clientX',
		direction: 'left',
	},
};

// @ts-ignore
export function renderThumbStyle({ move, size, bar }) {
	const style = {} as any;
	const translate = `translate${bar.axis}(${move}%)`;

	style[bar.size] = size;
	style.transform = translate;
	style.msTransform = translate;
	style.webkitTransform = translate;

	return style;
}

function extend<T, K>(to: T, _from: K): T & K {
	return Object.assign(to, _from);
}

export function toObject<T>(arr: Array<T>): Recordable<T> {
	const res = {};
	for (let i = 0; i < arr.length; i++) {
		if (arr[i]) {
			extend(res, arr[i]);
		}
	}
	return res;
}
